//导入路由创建实例的方法createRouter、创建createWebHistory路由模式的方法
import { createRouter, createWebHistory } from 'vue-router'
//引入HomeView.vue这个文件
import HomeView from '../views/HomeView.vue'

import { useLoginStore } from '@/stores/login'
// import { title } from 'process'删掉

//创建路由实例
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),//创建路由模式history
  routes: [//路由的配置
    {
      path: '/',//路由的路径 --访问路由的地址（浏览器上IP后面的地址）
      name: 'home',//路由的名称
      meta:{//元信息
        title:'首页',//标题
        requiresAuth:true//状态
      },
      component: HomeView//指向页面级组件（首页组件） 第一种方式
    },
    {
      path: '/about',
      name: 'about',
      // route level code-splitting
      // this generates a separate chunk (About.[hash].js) for this route
      // which is lazy-loaded when the route is visited.
      meta:{//元信息
        title:'关于',//标题
        requiresAuth:true//状态
      },
      component: () => import('../views/AboutView.vue')//第二种方式
    },
    {
      path:'/my',
      name:'my',
      meta:{//元信息
        title:'我的',//标题
        requiresAuth:true//状态
      },
      component:()=>import('../views/MyView.vue')
    },
    {
      path:'/method',
      name:'method',
      meta:{//元信息
        title:'方法',//标题
        requiresAuth:true//状态
      },
      component:()=>import('../views/MethodView.vue')
    },{
      path:'/page',
      name:'page',
      meta:{
        title:'卧龙控股',
        requiresAuth:false
      },
      component:()=>import('../views/PageView.vue')
    },{
      path:'/com',
      name:'com',
      meta:{
        title:'组件页面',
        requiresAuth:true
      },
      component:()=>import('../views/ComView.vue')
    },{
      path:'/Parent',
      name:'Parent',
      meta:{
        title:'顶层组件',
        requiresAuth:true
      },
      component:()=>import('../views/ParentView.vue')
    },{
      path:'/login',
      name:'login',
      meta:{
        title:'登录',
        requiresAuth:false
      },
      component:()=>import('../views/LoginView.vue')
    }
  ]
})

//路由导航守卫 -前置守卫
//to:即将要去的页面路由对象，from：当前要离开的路由对象 next：中间件、执行下一步
router.beforeEach((to,from,next)=>{

  const loginStore=useLoginStore()

  //登录状态 true:已登录 false：未登录
  var loginBoo=loginStore.loginBoolean
  if(loginBoo || to.path=='/'){
    next()
  }else{
    //防止死循环，如果没有就是一直去my，但是又会触发导航守卫
    if(to.path=='/login'){
      next()
      return
    }
    next('/login')
  }
})

//默认暴露出路由对象
export default router
